package org.example.common.config;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class CaffeineConfig  implements InitializingBean {
    /**
     * cache name配置
     */
    @Value("${caffeine.cacheNames}")
    private String cacheNames;
    /**
     * cache name配置
     */
    public static  String CACHE_NAMES;
    /**
     * 初始的缓存空间大小
     */
    @Value("${caffeine.initCapacity}")
    private String initCapacity;
    /**
     * 初始的缓存空间大小
     */
    public String INIT_CAPACITY;
    /**
     * 缓存最大的条数
     */
    @Value("${caffeine.maxSize}")
    private String maxSize;
    /**
     * 缓存最大的条数
     */
    public static String MAX_SIZE;
    /**
     * 最后一次写入或访问后经过固定的时间
     */
    @Value("${caffeine.expireAfterAccess}")
    private String expireAfterAccess;
    /**
     * 最后一次写入或访问后经过固定的时间
     */
    public static String EXPIRE_AFTER_ACCESS;
    /**
     * 创建缓存或最新一次更新缓存后经过固定的时间间隔，刷新缓存
     */
    @Value("${caffeine.refreshAfterWrite}")
    private String refreshAfterWrite;
    /**
     * 创建缓存或最新一次更新缓存后经过固定的时间间隔，刷新缓存
     */
    public static String REFRESH_AFTER_WRITE;


    @Override
    public void afterPropertiesSet() throws Exception {
        this.CACHE_NAMES=cacheNames;
        this.INIT_CAPACITY=initCapacity;
        this.MAX_SIZE=maxSize;
        this.EXPIRE_AFTER_ACCESS=expireAfterAccess;
        this.REFRESH_AFTER_WRITE=refreshAfterWrite;
    }
}
